home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 4 / Meeting Pearls Vol. IV (1996)(GTI - Schatztruhe)[!].iso / Pearls / midi / misc / Midi2TeX / src / tp_decl.h < prev    next >
C/C++ Source or Header  |  1994-03-21  |  7KB  |  243 lines

  1. /* Header for module TP_Decl, generated by p2c */
  2.  
  3. #ifndef TP_DECL_H
  4. #define TP_DECL_H
  5.  
  6. #ifdef TP_DECL_G
  7. # define vextern
  8. #else
  9. # define vextern extern
  10. #endif
  11.  
  12. #include <stdio.h>
  13. #undef FALSE
  14. #undef TRUE
  15.  
  16. typedef enum {FALSE,TRUE} boolean;
  17. typedef unsigned char uchar;
  18.  
  19. /* #define uchar         unsigned char */
  20. #define Char         char
  21. #define  Void         void
  22.  
  23. #define NilStr          '\0'
  24. #define BufSize_        512     /* 8192 */
  25. #define NoTracks        16
  26. #define MAXSLURR        10
  27. #define true        TRUE
  28. #define false        FALSE
  29.     /* this is the maximum-1 that MusicTeX can handle */
  30.  
  31. #define MAXBEAMS        9   /* ditto */
  32. #define MAXPARTS        25
  33. #define PT              3.5   /* 0.1 mm  1 inch/72.27 = 25.4/72.27 mm */
  34. #define VERSION       "C-version V 1.1"
  35.  
  36. typedef enum {
  37.   WH, WHPPP, WHPP, WHP, H, HPPP, HPP, HP, Q, QPPP, QPP, QP, CPPP,
  38.   CPP, C3, CP, C, CCPP, CC3, CCP, CC, CCC3, CCCP, CCC, CCCC3, CCCCP, CCCC
  39.   } NoteTypes;
  40.  
  41. typedef enum { SCREEN, DEBFILE, PRINT, NODEB } DebugType;
  42.  
  43. typedef enum {
  44.    VOID, NOTEON, NOTEOFF, REST, TXT, SIGNATURE, PEDAL, KEYSIGN } EventType;
  45.  
  46. typedef enum { UP, DOWN } OrientType;
  47.  
  48. typedef enum { VIOLIN, ALTO1, ALTO2, ALTO3, ALTO4, ALTO5, BASS } ClefType;
  49.  
  50. typedef enum {  STARTSLUR, ENDSLUR, REPEATSLUR } SlurType;
  51.  
  52. typedef enum {  NON, FLAT, SHARP, CORRECT } KeySignType;
  53.  
  54. typedef struct {
  55.   char p[81];
  56.   char r[3];
  57.   char d[81];
  58. #ifdef THINK_C  
  59.   char n[40];  /* for including the path in the filename */
  60. #endif
  61. #ifndef THINK_C  
  62.   char n[9];
  63. #endif
  64.   char e[5];
  65.   } FileNameType;
  66.  
  67. typedef char String20Type[21];
  68. typedef char String255Type[256];
  69.  
  70.  
  71. typedef uchar BufType[BufSize_];
  72.  
  73. typedef struct {
  74.   unsigned short BufSemaphore;
  75.   /*LastAvBytePnt,*/
  76.   unsigned short LastNoBytesRead;
  77.   char *BufPoint,*ReadBuf;
  78.   /* BufType *ReadBuf; */
  79.   long BytesProcessed;
  80.   long ReadIn, i;
  81.   boolean LastBlockRead, NoMoreData;
  82.   long FilePosition;
  83.   } FileRecord;
  84.  
  85. typedef struct MeasureTime {
  86.   long Measure, MPart;
  87.   } MeasureTime;
  88.  
  89. typedef struct NoteRecord {
  90.   uchar MidiChnl, NoteVal, Velocity;
  91.   NoteTypes NoteType;
  92.   EventType Event;
  93.   OrientType Orient;
  94.   long FilePos;
  95.   MeasureTime EndTime, StartTime;
  96.   boolean ChordNote, BeamNote, SlurrNote;
  97.   struct NoteRecord *Next, *Prev;
  98.   Char *MetaTxt;
  99.   } NoteRecord;
  100.  
  101. typedef struct BeamRecord {
  102.   NoteRecord *StartNote, *EndNote;
  103.   uchar NoNotes, Pitch, Numb;
  104.   char Slope;
  105.   OrientType Orient;
  106.   NoteTypes NoteType;
  107.   boolean Chain2Next;
  108.   } BeamRecord;
  109.  
  110. typedef struct SlurrRecord {
  111.   NoteRecord *NotePnt;
  112.   uchar NoteVal, Numb1, Numb2;
  113.   SlurType KindOf;
  114.   OrientType Orient;
  115.   boolean Occupied;
  116.   } SlurrRecord;
  117.  
  118. typedef struct ChordRecord {
  119.   NoteRecord *StartNote, *EndNote;
  120.   uchar NoNotes;
  121.   boolean ChordFinished;
  122.   } ChordRecord;
  123.  
  124. typedef struct AccKeyType {
  125.   KeySignType c, d, e, f, g, a, b;
  126.   } AccKeyType;
  127.  
  128. typedef AccKeyType AccKeyArray[NoTracks];
  129.  
  130. typedef struct HeapRecord {
  131.   NoteRecord *Tail;
  132.   unsigned short Size;
  133.   } HeapRecord;
  134.  
  135. typedef NoteRecord NoteArrayType[50];
  136. typedef ChordRecord ChordArrayType[25];
  137. typedef BeamRecord BeamArrayType[MAXBEAMS];
  138. typedef SlurrRecord SlurrArrayType[MAXSLURR];
  139.  
  140. typedef struct TrackRecord {
  141.   HeapRecord NoteList, SpillList;
  142.   ChordArrayType ChordArray;
  143.   BeamArrayType BeamArray;
  144.   SlurrArrayType SlurrArray;
  145.   uchar ChStackEnd, ChStackPoint, NotesSounding, StatusByte;
  146.   MeasureTime LastNoteOffTime, Curtime, OldTime, OldOldTime;
  147.   FileRecord FilRec;
  148.   long SlurrPt, BeamPt, ChordPt;
  149.   boolean Beam, Slurring, Chord, Skip, Instrument, ForceZeroBeams,
  150.       EndOfTrackRead;
  151.   ClefType Clef;
  152.   NoteRecord *PartStart[MAXPARTS], *PartEnd[MAXPARTS];
  153.   AccKeyType AccKey;
  154.   } TrackRecord;
  155.  
  156. typedef struct ControlInfo {
  157.   uchar Num;   /* numerator of time signature */
  158.   uchar Den;   /* denominator of time signature */
  159.   long Division;   /* ticks in a quarter note */
  160.   long TicksPerMeasure;
  161.   unsigned short PartTime;
  162.   uchar PartType, nparts;
  163.   boolean PartOverRule;
  164.   long Tempo;            /* int microsecs per quart note */
  165.   unsigned short Twindow;      /* TimeWindow */
  166.   long KeySign, Minor;
  167. } ControlInfo;
  168.  
  169. typedef char MsArray[MAXPARTS][512];
  170.  
  171. vextern Char TmpStr[41],STR1[256],STR2[256],STR3[256];
  172. /* vextern MsArray *Ms; */
  173. vextern  uchar NilPos, Drno, abyte;
  174. vextern  long ntracks, ninstruments, nTracksInInstr, CurTrack, FileFormat,
  175.          SafetyCounter, OK_result;
  176. vextern  FILE *MidiFile;
  177. vextern  FILE *DebugFile, *TexFile;
  178. vextern  uchar *DebBuf, *TexBuf;
  179. /*  SearchRec FileInfo; */
  180. vextern  FileNameType DebugFileName, MidiFileName, TeXFileName;
  181. vextern  Char path[80];
  182. vextern  Char fname[9];
  183. vextern  Char dir[80];
  184. vextern  Char ext[4];
  185. vextern  long ReadIn, i;
  186. vextern  boolean Quantizing, QuitTrack, DebugFileOpened, MidiFileOpened,
  187.         TeXHeaderFinished, Debug,ChangedContext;
  188. vextern  long QuantTime;
  189. vextern  long NoOfBytes, ALongInt;
  190. vextern  TrackRecord TrackArray[NoTracks];
  191. vextern  boolean SlurrIndexes[26];
  192. vextern  ControlInfo PieceContr;
  193. vextern  MeasureTime TempTime, OldTime, CurTime;
  194. vextern  Char MeasureStr[256];
  195. vextern  DebugType DebugOut;
  196. vextern  long MeasureCount;
  197. /* vextern  Char Notes[129];
  198.    vextern  uchar CPosition; */
  199. vextern  FileRecord HlpFilRec;
  200. vextern  void *OldExitProc;
  201. vextern  NoteRecord *N;
  202. vextern  HeapRecord NotePool;
  203. vextern  uchar TrackOrder[NoTracks];
  204. vextern  long BeamIndex, OrderIndex, NoOfSkips, NoOfPages, Indent, BarIndent,
  205.          ScoreWidth, ScoreHeight, ScoreSep, LineHeight, MeasureMaxCnt,
  206.          ElemSkip, MusicSize, CumLength, CumHeight;
  207. vextern  boolean SizingChanged, BatchProcessing;
  208. /*
  209. vextern Notes : ARRAY[1..66] of string[3] =
  210.         ('?','?','?','?','?','?','?','?','?','?','?','?','!'+CHAR(39)+'A',
  211.         '!'+CHAR(39)+'B','!'+CHAR(39)+'C','!'+CHAR(39)+'D','!'+CHAR(39)+'E',
  212.         '!'+CHAR(39)+'F','!'+CHAR(39)+'G','A','B','C','D','E','F','G','H',
  213.         'I','J','K','L','M','N','a','b','c','d','e','f','g','h','i','j',
  214.         'k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
  215.         '?','?',
  216.         '?','?','?','?','?');
  217. */
  218.  
  219.  
  220. #undef vextern
  221.  
  222. #ifdef TP_DECL_G
  223. char Notes[66][4] =
  224.         {"?","?","?","?","?","?","?","?","?","?","?","?",
  225.         "!'A","!'B","!'C","!'D","!'E","!'F","!'G",
  226.         "A","B","C","D","E","F","G","H","I","J","K","L","M","N",
  227.         "a","b","c","d","e","f","g","h","i","j","k","l","m","n",
  228.         "o","p","q","r","s","t","u","v","w","x","y","z",
  229.         "?","?","?","?","?","?","?"};
  230.  
  231. const int CPosition=36;
  232. #else
  233. extern char Notes[66][4];
  234. extern CPosition;
  235. #endif
  236.  
  237. #endif /*TP_DECL_H  */
  238.  
  239. void _TP_Decl_init(void);
  240.  
  241. /* End. */
  242.  
  243.